package file.it.d2_recursion;

/**
 * 目标：掌握递归的应用，执行流程和算法思想
 */
public class Test2 {
    // 递归算法基础：解决阶乘
    public static void main(String[] args) {
        System.out.println("5的阶乘是：" + f(5));
    }

    public static int f(int n) {
        // 终结点
        if (n == 1) {
            return 1;
        } else {
            // 执行过程1 => 递归向终点： 5*f(4) -> 4*f(3) -> 3*f(2) -> 2*f(1) -> f(1)
            // 执行过程2 => 再从终结点递归回来 ：5*4*3*2*1 -> 4*3*2*1 -> 3*2*1 -> 2*1 -> 1
            return f(n - 1) * n; // 直接方法递归：方法自己调用自己 f(n - 1)
        }
    }
}
